home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / C64 / T-TPUG Old Monthly Disks / (c)td.d64 / acctsr_t (.txt) < prev    next >
Commodore BASIC  |  2007-02-04  |  28KB  |  906 lines

  1. 1 REM *PROGRAM NAME IS ACCTSR/T*
  2. 2 POKE45,PEEK(174):POKE46,PEEK(175):CLR
  3. 3 HF$="ACCTSR/X":REM HASH FILE
  4. 4 MS= 100 :REM *NUMBER OF RECORDS
  5. 5 KF= 1 :RS= 192
  6. 7 DF$="ACCTSR0/D":REM DATA FILE NAME
  7. 8 SF$="ACCTSR/S":REM SCREEN FILE
  8. 10 GOSUB52210:GOSUB 33000
  9. 20 Y$=""
  10. 21 SS$="":FORI=1TO80:SS$=SS$+CHR$(160):NEXTI
  11. 22 SP$="":FORI=1TO39:SP$=SP$+CHR$(32):NEXT I
  12. 25 DT$="":FORI=1TO39:DT$=DT$+CHR$(46):NEXT I
  13. 30 PRINTCHR$(14)
  14. 35 REM
  15. 37 DIM F$(NF),G$(NF),DT%(12),GS%(NF+NC)
  16. 40 FORI=1TONG:READGK%:GS%(GK%)=I:NEXTI
  17. 42 DATA  16
  18. 52 FOR I=1TO12:DT%(I)=31:NEXTI
  19. 54 DT%(2)=29:DT%(4)=30:DT%(6)=30:DT%(9)=30:DT%(11)=30
  20. 55 TT$="[198]INISHED WITH ENTRY? ([210][197][212][213][210][206]=NO)"
  21. 68 GOSUB13000:REM GET GLOBALS FROM /GLB FILE
  22. 70 OPEN2,8,2,"0:"+HF$+",L,"+CHR$(5)
  23. 71 INPUT#2,NR$:NR=VAL(NR$):INPUT#2,NXR$:INPUT#2,XFS$:INPUT#2,XFS$:CLOSE2
  24. 72 PQ=1:IF ASC(NR$)=255 THEN PQ=0
  25. 80 DIM CS%(NC):FORI=1TONC:READCS%(I):NEXTI
  26. 82 DATA  0
  27. 89 PRINT"[147]":GOSUB800:GOSUB55100
  28. 90 POKE 808,237:FOR I=1 TO NF:G$(I)="":F$(I)="":NEXT I:FC=0:UF=0
  29. 95 PRINTCHR$(147);CHR$(8):G$="":FORI=1TONC:CE(I)=0:CD(I)=0:NEXTI
  30. 100 PRINTTAB(20-(9+ 13 /2));"[208]ROGRAM [196]ESIGN BY [212]HE [195]OMPUCATS"
  31. 110 PRINT:PRINTTAB(20-( 21 /2));" [193][195][195][207][213][206][212][211][160][210][197][195][197][201][214][193][194][204][197] [146]"
  32. 120 PRINT:PRINT:PRINT
  33. 130 PRINTTAB(1);"[198]ILE [208]REPARATION (FIRST TIME ONLY!). F"
  34. 140 PRINT
  35. 150 PRINTTAB(1);"[197]NTER DATA ......................... E"
  36. 160 PRINTTAB(1);"[213]PDATE DATA ........................ U"
  37. 170 PRINTTAB(1);"[204]OOK UP RECORD ..................... L"
  38. 180 PRINTTAB(1);"[211]EARCH RECORDS...................... S"
  39. 190 PRINTTAB(1);"[196]ELETE RECORD ...................... D"
  40. 195 PRINTTAB(1);"[214]ERIFY GLOBAL TOTALS ............... V"
  41. 197 PRINTTAB(1)"[211]ET DISPLAY COLORS ................. Z"
  42. 200 PRINT
  43. 210 PRINTTAB(1);"[197]XIT ...(AFTER [197][193][195][200] SESSION)........ X"
  44. 215 PRINT LEFT$(Y$,21);
  45. 220 PRINT"[197]NTER YOUR CHOICE THEN PRESS [210][197][212][213][210][206][146]";
  46. 230 PRINTLEFT$(Y$,23)"[212]O RETURN TO THE MENU PRESS F1[146] "
  47. 235 C3=PEEK(56128)AND15
  48. 240 X%=38:Y%=21:L%=1:GOSUB 34000:AN$=IN$:FF$=IN$
  49. 250 IF AN$="E" THEN GOSUB 1000:GOTO90
  50. 255 IF AN$="Z" THEN GOSUB 53000:GOTO90
  51. 260 IF AN$="L" THEN GOSUB 10000:GOTO90
  52. 270 IF AN$="S"THEN GOSUB 35000:GOTO90
  53. 280 IF AN$="U"THEN GOSUB 11000:GOTO90
  54. 290 IF AN$="D"THEN GOSUB 12000:GOTO90
  55. 300 IF AN$="F"THEN GOSUB 32000:GOTO90
  56. 305 IF AN$="V"THEN GOSUB 13200:GOTO90
  57. 310 IF AN$<>"X"THEN 90
  58. 315 IF PQ=0THENPRINT"[147]":GOSUB1002:GOTO90
  59. 320 GOSUB 9700:PRINT"[147]":REM UPDATE INDEX FILE PTRS
  60. 322 OPEN4,8,4,"MENU":GOSUB52220:CLOSE4:IF DS=0THEN 330
  61. 324 CLOSE15:PRINTCHR$(9):END
  62. 330 PRINT"[147]     *** [204]OADING [205]ENU [208]ROGRAM[146] ***":LOAD"MENU",8:END
  63. 800 PRINT:PRINT:PRINT TAB(5);"********* [215][193][210][206][201][206][199][160]*********"
  64. 805 PRINT:PRINT"   [212]O PREVENT THE LOSS OF YOUR FILES,"
  65. 810 PRINT"[193]LWAYS TAKE THE X-OPTION BEFORE LEAVING."
  66. 815 PRINTLEFT$(Y$,23):PRINT"       [208]RESS [210][197][212][213][210][206][146] TO CONTINUE"
  67. 820 GET AA$:IF AA$=""THEN  820
  68. 825 RETURN
  69. 1000 PRINT CHR$(147)
  70. 1001 IF PQ=1 THEN 1010
  71. 1002 PRINT"[212]HE DATA FILES MUST BE INITIALIZED."
  72. 1003 PRINT"[208]LEASE SELECT THE FILE PREPARATION      OPTION."
  73. 1005 PRINTLEFT$(Y$,24)"[208]LEASE [208]RESS [210][197][212][213][210][206][146] TO CONTINUE"
  74. 1006 GET AA$:IF AA$<>CHR$(13) THEN 1006
  75. 1007 RETURN
  76. 1010 IF NR<MS THEN 1050
  77. 1020 PRINT"[147][217]OU HAVE ENTERED ";MS;" RECORDS"
  78. 1030 PRINT:PRINT"[217]OUR FILE IS FULL"
  79. 1035 PRINT:PRINT"[208]RESS [210][197][212][213][210][206][146] TO CONTINUE"
  80. 1040 GET AA$:IF AA$<>CHR$(13) THEN 1040
  81. 1045 RETURN
  82. 1050 FORI=1 TO NF:SD$=LEFT$(DT$,L%(I))
  83. 1053 IFT$(I)="D"THENSD$="../../.."
  84. 1056 PRINTLEFT$(Y$,Y%(I));TAB(X%(I));PR$(I);SD$
  85. 1060 NEXT I
  86. 1061 IFNT=<0THEN1065
  87. 1062 FOR I=1 TO NT
  88. 1063 PRINTLEFT$(Y$,TY%(I));TAB(TX%(I)+1);TP$(I)
  89. 1064 NEXT I
  90. 1065 REM
  91. 1080 FC=FC+1
  92. 1082 IF FC<= 0 OR FC> 6 THEN 1086
  93. 1084 ON FC- 0 GOSUB 2010, 2060, 2110, 2160, 2210, 2260
  94. 1086 IF FC<= 6 OR FC> 12 THEN 1090
  95. 1088 ON FC- 6 GOSUB 2310, 2360, 2400, 2440, 2490, 2540
  96. 1090 IF FC<= 12 OR FC> 15 THEN 1094
  97. 1092 ON FC- 12 GOSUB 2600, 2660, 2720
  98. 1094 IF IN$=CHR$(133) THEN RETURN
  99. 1095 IF GS%(FC)>0 THEN GK(GS%(FC))=GL(GS%(FC))+VAL(G$(FC))
  100. 1140 PRINTLEFT$(Y$,23);SP$
  101. 1142 IF FC< 15 THEN 1080
  102. 1160 PRINTLEFT$(Y$,24);SP$;
  103. 1170 PRINTLEFT$(Y$,24);"[201]S THIS ALL CORRECT? ( [210][197][212][213][210][206][146] = YES )";
  104. 1180 X%=38:Y%=24:L%=1:GOSUB 34000:PRINTLEFT$(Y$,23);SP$:PRINTSP$;
  105. 1190 IFLEN(IN$)=0ORIN$="Y" THEN 2780
  106. 1195 IF IN$<>"N"THEN1170
  107. 1200 PRINTLEFT$(Y$,23);"[215]HICH FIELD TO CHANGE? ":PRINT"(1 - 15 OR 'LIST')";
  108. 1210 X%= 18 :Y%=24:L%=4:GOSUB34000:IN=VAL(IN$)
  109. 1220 IF IN$="LIST" THEN F=1:GOSUB20000:GOSUB21000:GOTO 1200
  110. 1230 IFIN<1ORIN> 15 THEN PRINTLEFT$(Y$,23);SP$:PRINTLEFT$(Y$,23);"[201]NVALID FIELD #":GOTO 1160
  111. 1240 PRINTLEFT$(Y$,23);SP$:PRINTSP$
  112. 1250 IF IN<= 0 OR IN> 6 THEN 1254
  113. 1252 ON IN- 0 GOSUB 2010, 2060, 2110, 2160, 2210, 2260
  114. 1254 IF IN<= 6 OR IN> 12 THEN 1258
  115. 1256 ON IN- 6 GOSUB 2310, 2360, 2400, 2440, 2490, 2540
  116. 1258 IF IN<= 12 OR IN> 15 THEN 1262
  117. 1260 ON IN- 12 GOSUB 2600, 2660, 2720
  118. 1262 IFIN$=CHR$(133)THENRETURN
  119. 1272 IFGS%(IN)>0 THEN GK(GS%(IN)) = GL(GS%(IN)) +VAL(G$(IN))
  120. 1282 GOTO1160
  121. 2010 X%=X%( 1)+LEN(PR$( 1)):Y%=Y%( 1):L%=L%( 1)
  122. 2011 IFUF<>0ANDG$=""THENG$=G$( 1)
  123. 2020 GOSUB34000:PRINTLEFT$(Y$,23);SP$:G$( 1)=IN$:IFG$( 1)=CHR$(133)THEN RETURN
  124. 2030 IF UF<>0 AND LEN(IN$)=0 THEN G$( 1)=G$
  125. 2040 IFLEN(G$( 1))<L%( 1 ) THEN I= 1 :GOSUB40500
  126. 2050 RETURN
  127. 2060 X%=X%( 2)+LEN(PR$( 2)):Y%=Y%( 2):L%=L%( 2)
  128. 2061 IFUF<>0ANDG$=""THENG$=G$( 2)
  129. 2070 GOSUB34000:PRINTLEFT$(Y$,23);SP$:G$( 2)=IN$:IFG$( 2)=CHR$(133)THEN RETURN
  130. 2080 IF UF<>0 AND LEN(IN$)=0 THEN G$( 2)=G$
  131. 2090 IFLEN(G$( 2))<L%( 2 ) THEN I= 2 :GOSUB40500
  132. 2100 RETURN
  133. 2110 X%=X%( 3)+LEN(PR$( 3)):Y%=Y%( 3):L%=L%( 3)
  134. 2111 IFUF<>0ANDG$=""THENG$=G$( 3)
  135. 2120 GOSUB34000:PRINTLEFT$(Y$,23);SP$:G$( 3)=IN$:IFG$( 3)=CHR$(133)THEN RETURN
  136. 2130 IF UF<>0 AND LEN(IN$)=0 THEN G$( 3)=G$
  137. 2140 IFLEN(G$( 3))<L%( 3 ) THEN I= 3 :GOSUB40500
  138. 2150 RETURN
  139. 2160 X%=X%( 4)+LEN(PR$( 4)):Y%=Y%( 4):L%=L%( 4)
  140. 2161 IFUF<>0ANDG$=""THENG$=G$( 4)
  141. 2170 GOSUB34000:PRINTLEFT$(Y$,23);SP$:G$( 4)=IN$:IFG$( 4)=CHR$(133)THEN RETURN
  142. 2180 IF UF<>0 AND LEN(IN$)=0 THEN G$( 4)=G$
  143. 2190 IFLEN(G$( 4))<L%( 4 ) THEN I= 4 :GOSUB40500
  144. 2200 RETURN
  145. 2210 X%=X%( 5)+LEN(PR$( 5)):Y%=Y%( 5):L%=L%( 5)
  146. 2211 IFUF<>0ANDG$=""THENG$=G$( 5)
  147. 2220 GOSUB34000:PRINTLEFT$(Y$,23);SP$:G$( 5)=IN$:IFG$( 5)=CHR$(133)THEN RETURN
  148. 2230 IF UF<>0 AND LEN(IN$)=0 THEN G$( 5)=G$
  149. 2240 IFLEN(G$( 5))<L%( 5 ) THEN I= 5 :GOSUB40500
  150. 2250 RETURN
  151. 2260 X%=X%( 6)+LEN(PR$( 6)):Y%=Y%( 6):L%=L%( 6)
  152. 2261 IFUF<>0ANDG$=""THENG$=G$( 6)
  153. 2270 GOSUB34000:PRINTLEFT$(Y$,23);SP$:G$( 6)=IN$:IFG$( 6)=CHR$(133)THEN RETURN
  154. 2280 IF UF<>0 AND LEN(IN$)=0 THEN G$( 6)=G$
  155. 2290 IFLEN(G$( 6))<L%( 6 ) THEN I= 6 :GOSUB40500
  156. 2300 RETURN
  157. 2310 X%=X%( 7)+LEN(PR$( 7)):Y%=Y%( 7):L%=L%( 7)
  158. 2311 IFUF<>0ANDG$=""THENG$=G$( 7)
  159. 2320 GOSUB34000:PRINTLEFT$(Y$,23);SP$:G$( 7)=IN$:IFG$( 7)=CHR$(133)THEN RETURN
  160. 2330 IF UF<>0 AND LEN(IN$)=0 THEN G$( 7)=G$
  161. 2340 IFLEN(G$( 7))<L%( 7 ) THEN I= 7 :GOSUB40500
  162. 2350 RETURN
  163. 2360 X%=X%( 8)+LEN(PR$( 8)):Y%=Y%( 8):L%=L%( 8)
  164. 2361 IFUF<>0ANDG$=""THENG$=G$( 8)
  165. 2370 GOSUB49000:PRINTLEFT$(Y$,23);SP$:G$( 8)=IN$:IFG$( 8)=CHR$(133)THEN RETURN
  166. 2380 IF UF<>0 AND LEN(IN$)=0 THEN G$( 8)=G$
  167. 2390 RETURN
  168. 2400 X%=X%( 9)+LEN(PR$( 9)):Y%=Y%( 9):L%=L%( 9)
  169. 2401 IFUF<>0ANDG$=""THENG$=G$( 9)
  170. 2410 GOSUB49000:PRINTLEFT$(Y$,23);SP$:G$( 9)=IN$:IFG$( 9)=CHR$(133)THEN RETURN
  171. 2420 IF UF<>0 AND LEN(IN$)=0 THEN G$( 9)=G$
  172. 2430 RETURN
  173. 2440 X%=X%( 10)+LEN(PR$( 10)):Y%=Y%( 10):L%=L%( 10)
  174. 2441 IFUF<>0ANDG$=""THENG$=G$( 10)
  175. 2450 GOSUB34000:PRINTLEFT$(Y$,23);SP$:G$( 10)=IN$:IFG$( 10)=CHR$(133)THEN RETURN
  176. 2460 IF UF<>0 AND LEN(IN$)=0 THEN G$( 10)=G$
  177. 2470 IFLEN(G$( 10))<L%( 10 ) THEN I= 10 :GOSUB40500
  178. 2480 RETURN
  179. 2490 X%=X%( 11)+LEN(PR$( 11)):Y%=Y%( 11):L%=L%( 11)
  180. 2491 IFUF<>0ANDG$=""THENG$=G$( 11)
  181. 2500 GOSUB34000:PRINTLEFT$(Y$,23);SP$:G$( 11)=IN$:IFG$( 11)=CHR$(133)THEN RETURN
  182. 2510 IF UF<>0 AND LEN(IN$)=0 THEN G$( 11)=G$
  183. 2520 IFLEN(G$( 11))<L%( 11 ) THEN I= 11 :GOSUB40500
  184. 2530 RETURN
  185. 2540 X%=X%( 12)+LEN(PR$( 12)):Y%=Y%( 12):L%=L%( 12)
  186. 2541 IFUF<>0ANDG$=""THENG$=G$( 12)
  187. 2550 GOSUB34000:PRINTLEFT$(Y$,23);SP$:G$( 12)=IN$:IFG$( 12)=CHR$(133)THEN RETURN
  188. 2560 IF UF<>0 AND LEN(IN$)=0 THEN G$( 12)=G$
  189. 2561 IFUF=0 THEN  2564
  190. 2562 B$=G$( 12):A$="M":GOSUB41000:G1=I9
  191. 2563 IFG1>0THENGG=VAL(G$( 12))+VAL(G$):G$( 12)=STR$(GG)
  192. 2564 IFUF=0THEN 2570
  193. 2565 B$=G$( 12):A$="L":GOSUB41000:G1=I9
  194. 2566 IFG1>0THENGG=VAL(G$)-VAL(G$( 12)):G$( 12)=STR$(GG)
  195. 2570 G$( 12)=STR$(VAL(G$( 12)))
  196. 2575 IF VAL(G$( 12))>=0 THENG$( 12)=RIGHT$(G$( 12),LEN(G$( 12))-1)
  197. 2580 IFLEN(G$( 12))<L%( 12 ) THEN I= 12 :GOSUB40500
  198. 2590 RETURN
  199. 2600 X%=X%( 13)+LEN(PR$( 13)):Y%=Y%( 13):L%=L%( 13)
  200. 2601 IFUF<>0ANDG$=""THENG$=G$( 13)
  201. 2610 GOSUB34000:PRINTLEFT$(Y$,23);SP$:G$( 13)=IN$:IFG$( 13)=CHR$(133)THEN RETURN
  202. 2620 IF UF<>0 AND LEN(IN$)=0 THEN G$( 13)=G$
  203. 2621 IFUF=0 THEN  2624
  204. 2622 B$=G$( 13):A$="M":GOSUB41000:G1=I9
  205. 2623 IFG1>0THENGG=VAL(G$( 13))+VAL(G$):G$( 13)=STR$(GG)
  206. 2624 IFUF=0THEN 2630
  207. 2625 B$=G$( 13):A$="L":GOSUB41000:G1=I9
  208. 2626 IFG1>0THENGG=VAL(G$)-VAL(G$( 13)):G$( 13)=STR$(GG)
  209. 2630 G$( 13)=STR$(VAL(G$( 13)))
  210. 2635 IF VAL(G$( 13))>=0 THENG$( 13)=RIGHT$(G$( 13),LEN(G$( 13))-1)
  211. 2640 IFLEN(G$( 13))<L%( 13 ) THEN I= 13 :GOSUB40500
  212. 2650 RETURN
  213. 2660 X%=X%( 14)+LEN(PR$( 14)):Y%=Y%( 14):L%=L%( 14)
  214. 2661 IFUF<>0ANDG$=""THENG$=G$( 14)
  215. 2670 GOSUB34000:PRINTLEFT$(Y$,23);SP$:G$( 14)=IN$:IFG$( 14)=CHR$(133)THEN RETURN
  216. 2680 IF UF<>0 AND LEN(IN$)=0 THEN G$( 14)=G$
  217. 2681 IFUF=0 THEN  2684
  218. 2682 B$=G$( 14):A$="M":GOSUB41000:G1=I9
  219. 2683 IFG1>0THENGG=VAL(G$( 14))+VAL(G$):G$( 14)=STR$(GG)
  220. 2684 IFUF=0THEN 2690
  221. 2685 B$=G$( 14):A$="L":GOSUB41000:G1=I9
  222. 2686 IFG1>0THENGG=VAL(G$)-VAL(G$( 14)):G$( 14)=STR$(GG)
  223. 2690 G$( 14)=STR$(VAL(G$( 14)))
  224. 2695 IF VAL(G$( 14))>=0 THENG$( 14)=RIGHT$(G$( 14),LEN(G$( 14))-1)
  225. 2700 IFLEN(G$( 14))<L%( 14 ) THEN I= 14 :GOSUB40500
  226. 2710 RETURN
  227. 2720 X%=X%( 15)+LEN(PR$( 15)):Y%=Y%( 15):L%=L%( 15)
  228. 2721 IFUF<>0ANDG$=""THENG$=G$( 15)
  229. 2730 GOSUB34000:PRINTLEFT$(Y$,23);SP$:G$( 15)=IN$:IFG$( 15)=CHR$(133)THEN RETURN
  230. 2740 IF UF<>0 AND LEN(IN$)=0 THEN G$( 15)=G$
  231. 2741 IFUF=0 THEN  2744
  232. 2742 B$=G$( 15):A$="M":GOSUB41000:G1=I9
  233. 2743 IFG1>0THENGG=VAL(G$( 15))+VAL(G$):G$( 15)=STR$(GG)
  234. 2744 IFUF=0THEN 2750
  235. 2745 B$=G$( 15):A$="L":GOSUB41000:G1=I9
  236. 2746 IFG1>0THENGG=VAL(G$)-VAL(G$( 15)):G$( 15)=STR$(GG)
  237. 2750 G$( 15)=STR$(VAL(G$( 15)))
  238. 2755 IF VAL(G$( 15))>=0 THENG$( 15)=RIGHT$(G$( 15),LEN(G$( 15))-1)
  239. 2760 IFLEN(G$( 15))<L%( 15 ) THEN I= 15 :GOSUB40500
  240. 2770 RETURN
  241. 2780 FORPZ=1TONC
  242. 2790 GOSUB 28100
  243. 2800 IJ=GS%(PZ)
  244. 2810 IF IJ > 0 THEN GK(IJ)=GL(IJ)+CD(PZ)
  245. 2820 NEXT PZ
  246. 9000 REM ==== LOOK FOR RECORD SPACE ====
  247. 9200 ZZ$=G$(KF):GOSUB26000:REM COMPUTE HASH KEY FOR REC. ENTERED
  248. 9300 GOSUB52100:GOSUB52135:REM POSITION TO HASH FILE & READ PTR TO LINKED LIST
  249. 9310 HPTR$=IK$:HKEY=RP:REM SAVE OLD LINK PTR
  250. 9325 RP=HKEY:GOSUB52100:IK$=XFS$:GOSUB52145:REM WRITE HASH LINK FOR NEW ENTRY
  251. 9330 RP=VAL(XFS$):GOSUB42000:REM WRITE DATA REC TO 0/D
  252. 9335 RP=RP+MS+4:GOSUB52100:GOSUB52135:DRP$=IK$:REM READ DEL REC LINKED LIST PTR
  253. 9340 GOSUB52100:IK$=HPTR$:GOSUB52145:REM WRITE LINK DATA REC LINK PTR
  254. 9350 IF ASC(DRP$)=255THEN GOTO9360
  255. 9355 XFS$=DRP$:GOTO9372:REM SET FREE SPACE PTR TO FREE-DEL-REC LINKED LIST PTR
  256. 9360 XFS$=NXR$:NXR$=STR$(VAL(NXR$)+1):REM UPDATE FREE & CONTIGUOUS SPACE PTRS.
  257. 9372 IF AN$="U" THEN RETURN
  258. 9375 NR=NR+1
  259. 9400 RM=MS-NR
  260. 9410 PRINTLEFT$(Y$,23);"[210]EC. ENTERED:";MID$(STR$(NR),2);
  261. 9420 PRINT" [210]EC. SPACES LEFT:";MID$(STR$(RM),2)
  262. 9430 IFRM=0THENPRINTLEFT$(Y$,23);SP$;
  263. 9440 IF RM=0 THENPRINTLEFT$(Y$,23);TAB(6);" [198][201][204][197] [198][213][204][204] [146]"
  264. 9450 PRINT"[208]RESS [210][197][212][213][210][206][146] TO CONTINUE."
  265. 9460 GET AA$:IF AA$<>CHR$(13) THEN  9460
  266. 9470 PRINTLEFT$(Y$,23);SP$
  267. 9480 IF RM=0 THEN RETURN
  268. 9490 PRINTLEFT$(Y$,24);SP$:PRINTLEFT$(Y$,24);TT$
  269. 9500 X%=LEN(TT$)+1:Y%=24:L%=1:GOSUB34000
  270. 9520 IF LEFT$(IN$,1)="Y" THEN GOSUB9700:RETURN
  271. 9530 IF LEN(IN$)=0 OR IN$="N"THEN 9550
  272. 9540 PRINTLEFT$(Y$,23);"[208]LEASE ANSWER Y OR N ([210][197][212][213][210][206][146]=NO)":GOTO  9490
  273. 9550 G$="":FC=0:PRINT"[147]":UF=0:GOTO 1000
  274. 9700 REM ==== UPDATE INDEX FILE PTRS ====
  275. 9701 PRINT"[147]      *** [213]PDATING [201]NDEX [198]ILE[146] ***"
  276. 9710 IK$=NXR$:RP=2:GOSUB52100:GOSUB52145:REM WRITE NEXT CONT. REC. PTR.
  277. 9720 IK$=XFS$:RP=4:GOSUB52100:GOSUB52145:REM WRITE NEXT FREE SPC PTR
  278. 9730 IK$=STR$(NR):RP=1:GOSUB52100:GOSUB52145:REM UPDATE REC COUNT
  279. 9740 RETURN
  280. 10000 PRINT "[147]"
  281. 10010 GOSUB 27000:REM PROMPT FOR HASH KEY
  282. 10015 IF IN$=CHR$(133)THEN RETURN
  283. 10020 IF ASC(IK$)<>255 THEN 10050
  284. 10030 GOSUB 27110:REM REC NOT FOUND PROMPT
  285. 10040 RETURN:REM RETURN TO MENU
  286. 10050 RP=IK:GOSUB40000:REM INPUT DATA REC
  287. 10055 IF LEFT$(F$(KF),LEN(ZZ$))<>ZZ$ THEN10090
  288. 10060 GOSUB29000:GOSUB29180:REM DISPLAY REC & PRMPT
  289. 10065 IF LEN(IN$)=0 OR IN$="Y" THEN GOTO10070
  290. 10068 GOTO10090
  291. 10070 GOSUB29220:REM PROMPT TO CONT
  292. 10080 IFIN$="X"THEN RETURN
  293. 10090 RP=IK+MS+4:GOSUB52100:GOSUB52135:REM READ LINK POINTER
  294. 10100 IFASC(IK$)<>255THEN10050:REM CONT SEARCH
  295. 10110 GOSUB27110:REM REC NOT FOUND PROMPT
  296. 10120 RETURN
  297. 11000 REM ==== FILE UPDATE ROUTINE ====
  298. 11005 PRINT "[147]"
  299. 11010 GOSUB 27000:REM PROMPT FOR HASH KEY
  300. 11015 IF IN$=CHR$(133)THEN RETURN
  301. 11020 IF ASC(IK$)=255 THEN GOSUB27125:RETURN:REM EXIT IF EMPTY
  302. 11030 HPTR=IK:HKEY=RP:REM SAVE HASH POINTER & KEY
  303. 11040 RP=IK:GOSUB40000:REM GET DATA REC
  304. 11050 RP=IK+MS+4:GOSUB52100:GOSUB52135:REM READ FILE LINK PTR IN /Y
  305. 11055 DRP$=IK$:REM SAVE DEL REC PTR
  306. 11058 IF LEFT$(F$(KF),LEN(ZZ$))<>ZZ$ THEN GOTO11080
  307. 11060 GOSUB 29000:GOSUB29180:REM DISPLAY REC & PROMPT
  308. 11070 IF LEN(IN$)=0 OR IN$="Y" THEN GOTO11800
  309. 11080 IF ASC(IK$)=255 THEN GOSUB27125:RETURN:REM REC NOT FOUND
  310. 11090 GOTO 11030:REM RESUME SEARCH
  311. 11800 FOR I=1 TO NF:G$(I)=F$(I):NEXT I:GOTO11812
  312. 11810 GOSUB28000:REM COMPUTE GLB & PC'S
  313. 11811 GOSUB29000:REM DISPLAY RECORD
  314. 11812 PRINTLEFT$(Y$,23);"[215]HICH FIELD TO UPDATE? (1-";NF;" OR LIST)"
  315. 11815 PRINT"([212]YPE F1[146] TO CANCEL,[210][197][212][213][210][206][146] TO SAVE)"
  316. 11820 X%= 35 :Y%=24:L%=4:GOSUB 34000
  317. 11823 UF=VAL(IN$):IF IN$=""THEN 11950
  318. 11824 IF IN$<>CHR$(133) THEN 11828
  319. 11825 REM === CLEAR CHANGES ===
  320. 11826 FOR I=1TONF:G$(I)=F$(I):NEXTI:FORI=1TONC:CD(I)=CE(I):NEXTI
  321. 11827 FOR I=1TONG:GK(I)=GL(I):NEXTI: GOTO11811
  322. 11828 IF IN$="LIST"THEN F=0 : GOSUB 20000:GOTO 11811
  323. 11829 REM === TEST 1 <= UF <= NF ===
  324. 11830 IF UF>0 AND UF <=NF THEN 11850
  325. 11840 PRINT LEFT$(Y$,23);SP$:PRINT SP$
  326. 11845 PRINT LEFT$(Y$,23);"*[201]NVALID FIELD*":FORI=1TO1000:NEXT:GOTO11812
  327. 11850 REM === CHANGE FIELD ===
  328. 11852 SD$=LEFT$(DT$,L%(UF)):IF T$(UF)<>"$" THEN 11855
  329. 11853 LD%=0- L%(UF):IF LD% > 0 THEN SD$=SD$+LEFT$(SP$,LD%)
  330. 11855 IF T$(UF)="D" THEN SD$="../../.."
  331. 11857 PRINTLEFT$(Y$,Y%(UF));TAB(X%(UF));PR$(UF);SD$
  332. 11858 G$=""
  333. 11860 IF UF<= 0 OR UF> 6 THEN 11864
  334. 11862 ON UF- 0 GOSUB 2010, 2060, 2110, 2160, 2210, 2260
  335. 11864 IF UF<= 6 OR UF> 12 THEN 11868
  336. 11866 ON UF- 6 GOSUB 2310, 2360, 2400, 2440, 2490, 2540
  337. 11868 IF UF<= 12 OR UF> 15 THEN 11872
  338. 11870 ON UF- 12 GOSUB 2600, 2660, 2720
  339. 11872 GOTO 11810
  340. 11950 Z$=G$(1)
  341. 11960 GOSUB 12105:REM DEL OLD REC AT XPT
  342. 11970 G$(1)=Z$
  343. 11980 GOSUB9200:REM ENTER NEW REC
  344. 11990 RETURN
  345. 12000 REM ==== RECORD DELETE ROUTINE ====
  346. 12005 PRINT "[147]"
  347. 12010 GOSUB 27000:REM PROMPT FOR HASH KEY
  348. 12015 IF IN$=CHR$(133)THEN RETURN
  349. 12020 IF ASC(IK$)=255 THEN GOSUB27125:RETURN:REM EXIT IF EMPTY
  350. 12030 HPTR=IK:HKEY=RP:REM SAVE HASH POINTER & KEY
  351. 12040 RP=IK:GOSUB40000:REM GET DATA REC
  352. 12050 RP=IK+MS+4:GOSUB52100:GOSUB52135:REM READ FILE LINK PTR IN /Y
  353. 12055 DRP$=IK$:REM SAVE DEL REC PTR
  354. 12058 IF LEFT$(F$(KF),LEN(ZZ$))<>ZZ$ THEN GOTO12080
  355. 12060 GOSUB 29000:GOSUB29180:REM DISPLAY REC & PROMPT
  356. 12070 IF IN$="Y" OR LEN(IN$)=0 THEN 12095
  357. 12080 IF ASC(IK$)=255 THEN GOSUB27125:RETURN:REM REC NOT FOUND
  358. 12090 GOTO 12030
  359. 12095 GOSUB 12800:REM DISPLAY PRMPT TO DELETE
  360. 12098 IF IN$="N" THEN RETURN
  361. 12100 NR=NR-1:RM=RM+1:REM UPDATE #REC & SPACE LEFT
  362. 12105 G$(1)=LEFT$(CHR$(255)+SS$,L%(1)):RP=HPTR:GOSUB42000:REM NULL DATA REC
  363. 12108 RP=HPTR+MS+4:GOSUB52100:IK$=XFS$:GOSUB52145:REM MOVE XFS TO DRL
  364. 12110 XFS$=STR$(HPTR):REM SET XFS TO DRP
  365. 12120 RP=HKEY:GOSUB52100:IK$=DRP$:GOSUB52145:REM MOVE LINK PTR TO HASH TABLE
  366. 12190 RETURN
  367. 12800 PRINTLEFT$(Y$,24);SP$;
  368. 12802 PRINTLEFT$(Y$,24);"[211]URE YOU WANT TO DELETE IT? (Y/N)"
  369. 12805 Y%=24:X%=34:L%=1:GOSUB34000
  370. 12820 IF IN$<>"Y"AND IN$<>"N"THEN 12800
  371. 12830 RETURN
  372. 12999 REM ==== GLOBAL TOTAL INPUT ROUTINE ====
  373. 13000 OPEN3,8,3,"0:ACCTSR/GLB,L,"+CHR$(15)
  374. 13005 FOR II=1TONG
  375. 13010 INPUT#3,GL$
  376. 13020 GL(II)=VAL(GL$)
  377. 13030 NEXTII
  378. 13040 CLOSE3:RETURN
  379. 13096 REM
  380. 13097 REM ==== GLOBAL TOTAL UPDATE ROUTINE ====
  381. 13098 REM ==   W9 IS THE DATA FILE'S FIELD NUMBER ==
  382. 13099 REM ==   IJ IS FIELD NUMBER OF THE CORRESPONDING GLOBAL TOTAL  ==
  383. 13100 OPEN3,8,3,"0:ACCTSR/GLB,L,"+CHR$(15)
  384. 13102 FOR W9=1TONF
  385. 13105 IJ = GS%(W9)
  386. 13110 IFIJ = 0THEN13135 : REM NO GLOBAL FIELD
  387. 13115 GOSUB52150
  388. 13118 IFAN$="U"THEN GL(IJ)=GK(IJ):GOTO13130
  389. 13120 IFAN$="D"THEN GL(IJ) = GL(IJ) - VAL(F$(W9))
  390. 13125 IFAN$="E"THEN GL(IJ) = GL(IJ) + VAL(G$(W9))
  391. 13130 PRINT#3,STR$(GL(IJ))
  392. 13135 NEXTW9
  393. 13140 FOR W9=1TONC
  394. 13145 IJ = GS%(W9+NF)
  395. 13150 IFIJ = 0THEN13175 : REM NO GLOBAL FIELD
  396. 13155 GOSUB52150
  397. 13158 IFAN$="U"THEN GL(IJ)=GK(IJ):GOTO13170
  398. 13160 IFAN$="D"THEN GL(IJ) = GL(IJ) - CE(W9)
  399. 13165 IFAN$="E"THEN GL(IJ) = GL(IJ) + CD(W9)
  400. 13170 PRINT#3,STR$(GL(IJ))
  401. 13175 NEXTW9
  402. 13180 CLOSE3:RETURN
  403. 13198 REM
  404. 13199 REM ==== VERIFY ALL GLOBAL VARIABLES ====
  405. 13200 REM ==   GENERATOR WILL KNOW WHICH TOTALS ARE THE GLOBAL ONES  ==
  406. 13203 PRINTCHR$(147);LEFT$(Y$,5)"[214]ERIFICATION WILL TAKE A LITTLE WHILE"
  407. 13205 FORII=1TONG
  408. 13210 GM(II) = 0 : GK(II) = GL(II)
  409. 13212 NEXTII
  410. 13215 FOR RP=1TOVAL(NXR$)-2
  411. 13220 GOSUB 40005:REM NEXT RECORD
  412. 13225 IFLEFT$(F$(1),1) = CHR$(255)THEN13255
  413. 13230 FOR IJ=1TONF
  414. 13240 IFGS%(IJ) > 0THENGM(GS%(IJ)) = GM(GS%(IJ))+VAL(F$(IJ))
  415. 13250 NEXTIJ
  416. 13255 NEXTRP
  417. 13257 FORII=1TONG
  418. 13260 GL(II) = GM(II)
  419. 13270 NEXTII
  420. 13275 FOR IJ=1TONC
  421. 13280 JK =GS%(IJ+NF)
  422. 13285 IFJK = 0THEN13350
  423. 13290 FOR RP=1TOVAL(NXR$)-2
  424. 13300 GOSUB 40005
  425. 13310 IFLEFT$(F$(1),1) = CHR$(255)THEN13340
  426. 13320 FOR PZ=1TOIJ:GOSUB28500:NEXTPZ
  427. 13330 GM(JK) = GM(JK) + CE(IJ)
  428. 13340 NEXTRP
  429. 13345 GL(GS%(IJ+NF)) =GM(GS%(IJ+NF))
  430. 13350 NEXTIJ
  431. 13360 PRINTCHR$(147);LEFT$(Y$,3);
  432. 13365 PRINT"[198]IELD";TAB(15);"[207]LD [212]OTAL";TAB(25);"[214]ERIFIED [212]OTAL": PRINT
  433. 13370 FOR IJ=1TONG
  434. 13380 PRINTGP$(IJ);TAB(15);GK(IJ);TAB(25);GM(IJ)
  435. 13390 IFGK(IJ) = GM(IJ)THEN13430
  436. 13400 PRINT"* OLD TOTAL CORRECTED *";
  437. 13410 OPEN3,8,3,"0:ACCTSR/GLB,L,"+CHR$(15):
  438. 13420 GOSUB52150:PRINT#3,GL(IJ):CLOSE3
  439. 13430 PRINT
  440. 13440 NEXTIJ
  441. 13445 PRINTLEFT$(Y$,24);"[208]RESS [210][197][212][213][210][206][146] TO CONTINUE"
  442. 13448 GET AA$:IFAA$<>CHR$(13)THEN13448
  443. 13450 RETURN
  444. 13460 REM
  445. 19999 REM ==== LIST FIELD NUMBERS ====
  446. 20000 PRINT"[147][203]EYBOARD-ENTERED FIELDS:":FOR J=1 TO NF STEP 2
  447. 20010 PRINT J;"- ";PR$(J);
  448. 20020 IFJ<NF THEN PRINTTAB(19);J+1;"- ";PR$(J+1);
  449. 20030 PRINT : NEXT J
  450. 20200 IFF<>2THEN20260
  451. 20210 PRINT:PRINT"[208]ROGRAM [195]ALCULATED [198]IELDS"
  452. 20220 FORJ=1TONCSTEP2
  453. 20230 PRINTJ+NF;"- ";CP$(J);
  454. 20240 IFJ<NCTHENPRINTTAB(19);J+NF+1;"- ";CP$(J+1);
  455. 20250 PRINT:NEXTJ
  456. 20260 REM PCS
  457. 20590 PRINT LEFT$(Y$,24);"[208]RESS [210][197][212][213][210][206][146] TO CONTINUE";
  458. 20600 GET AA$ : IF AA$<>CHR$(13) THEN 20600
  459. 20610 PRINTCHR$(147) : RETURN
  460. 21000 FOR I=1 TO NF:IFT$(I)<>"D"THEN SD$=G$(I):GOTO 21020
  461. 21010 SD$=LEFT$(G$(I),2)+"/"+MID$(G$(I),3,2)+"/"+RIGHT$(G$(I),2)
  462. 21020 PRINTLEFT$(Y$,Y%(I));TAB(X%(I));PR$(I);SD$:NEXT I
  463. 21030 RETURN
  464. 21040 SD$=STR$(CD(I))
  465. 21050 PRINTLEFT$(Y$,CY%(I));TAB(CX%(I));CP$(I);SD$;
  466. 21060 NEXTI
  467. 21062 FOR I=1 TO NT
  468. 21064 PRINT LEFT$(Y$,TY%(I))TAB(TX%(I)+1)TP$(I)
  469. 21066 NEXT I
  470. 21070 RETURN
  471. 26000 X=0:FOR ZZ=1 TO LEN(ZZ$)
  472. 26010 X=X+ZZ*ASC(MID$(ZZ$,ZZ,1))
  473. 26020 NEXT ZZ
  474. 26030 X=LOG(X):X$=STR$(X):RP=VAL(MID$(X$,6,4))
  475. 26040 RP=INT(MS*RP/10000)+5
  476. 26050 RETURN
  477. 27000 PRINT"[147]":SD$=LEFT$(DT$,L%( KF )):IFT$( KF )="D"THENSD$="../../.."
  478. 27010 PRINTLEFT$(Y$,Y%( KF ));TAB(X%( KF ));PR$( KF );SD$
  479. 27020 PRINTLEFT$(Y$,24);"[208]LEASE ENTER KEY OF DESIRED RECORD."
  480. 27030 GOSUB2010
  481. 27031 IF IN$=CHR$(133)THEN RETURN
  482. 27050 ZZ$=G$(KF):GOSUB 26000:REM COMPUTE HASH KEY
  483. 27070 GOSUB52100:GOSUB52135:REM READ HASH POINTER
  484. 27080 RETURN
  485. 27110 REM =    DISPLAY REC NOT FOUND PROMPT    =
  486. 27125 PRINTLEFT$(Y$,24);SP$;
  487. 27130 PRINTLEFT$(Y$,23)"[210]ECORD NOT FOUND - [212]YPE [210][197][212][213][210][206][146] TO EXIT."
  488. 27140 GET AA$:IF AA$<>CHR$(13) THEN 27140
  489. 27150 RETURN
  490. 28000 FOR II = 1 TO NF
  491. 28010 IJ = GS%(II)
  492. 28020 IF IJ = 0 THEN 28040
  493. 28030 GK(IJ) = GL(IJ) + VAL(G$(II)) - VAL(F$(II))
  494. 28040 NEXT II
  495. 28050 FOR II =1 TO NC
  496. 28060 PZ = II : GOSUB 28100
  497. 28065 IJ = GS%(II+NF)
  498. 28070 IF IJ = 0 THEN 28080
  499. 28075 GK(IJ) = GL(IJ) + CD(II) - CE(II)
  500. 28080 NEXT II
  501. 28085 RETURN
  502. 28095 REM ==== CALCULATE CD(PZ) ====
  503. 28097 REM ==== ASSUMING CD(1) THRU CD(PZ-1) IS CALCULATED ====
  504. 28100 IF PZ<= 0 OR PZ> 1 THEN 28104
  505. 28102 ON PZ- 0 GOSUB  28200
  506. 28104 RETURN
  507. 28200 CD(1)=VAL(G$(13))+VAL(G$(14))-VAL(G$(15))
  508. 28205 RETURN
  509. 28499 REM ==== PUT OLD VALUES IN CE() ====
  510. 28500 REM ==== BASED ON F$(),GL(),CE() ====
  511. 28505 IF CS%(PZ)=1 THEN RETURN
  512. 28510 IF PZ<= 0 OR PZ> 1 THEN 28514
  513. 28512 ON PZ- 0 GOSUB  28600
  514. 28514 RETURN
  515. 28600 CE(1) = VAL(F$(13))+VAL(F$(14))-VAL(F$(15))
  516. 28605 RETURN
  517. 29000 REM ==== DISPLAY RECORD TO SCREEN & PROMPTS RTN ====
  518. 29004 PRINT CHR$(147)
  519. 29005 IFNF=<0THEN29055
  520. 29010 FOR I=1 TO NF:D$=G$(I):IF T$(I)<>"D"THEN 29030
  521. 29020 D$=LEFT$(G$(I),2)+"/"+MID$(G$(I),3,2)+"/"+RIGHT$(G$(I),2)
  522. 29030 IF T$(I)="$"THEN DO$=D$:FW=L%(I):GOSUB 36000:D$=DO$
  523. 29035 IF T$(I)="#" THEN D$=RIGHT$(SP$+D$,L%(I))
  524. 29040 PRINTLEFT$(Y$,Y%(I));TAB(X%(I));PR$(I);D$
  525. 29050 NEXT I
  526. 29055 IFNC=<0THEN29085
  527. 29060 FOR I=1 TO NC:CD$=STR$(CD(I))
  528. 29065 IF CT$(I)="$"THEN DO$=CD$:FW=CL%(I):GOSUB 36000:CD$=DO$:GOTO 29075
  529. 29070 IF" "=LEFT$(CD$,1) THEN CD$=MID$(CD$,2):GOTO 29070
  530. 29073 CD$=RIGHT$(SP$+LEFT$(CD$,CL%(I)),CL%(I))
  531. 29075 PRINTLEFT$(Y$,CY%(I));TAB(CX%(I));CP$(I);CD$
  532. 29080 NEXT I
  533. 29085 IFNT=<0THEN29115
  534. 29090 FOR I=1 TO NT
  535. 29100 PRINTLEFT$(Y$,TY%(I));TAB(TX%(I)+1);TP$(I)
  536. 29110 NEXT I
  537. 29115 IFNG=<0THEN29165
  538. 29120 FOR I = 1 TO NG : REM GET GLOBAL INFO
  539. 29130 GL$=STR$(GK(I)):IF GT$(I)="$" THEN DO$=GL$:FW=GL%(I):GOSUB36000:GL$=DO$
  540. 29140 IFGT$="#"THENGL$=RIGHT$(SP$+GL$,GL%(I))
  541. 29150 PRINT LEFT$(Y$,GY%(I));TAB(GX%(I));GP$(I);GL$
  542. 29160 NEXT I
  543. 29165 RETURN
  544. 29180 PRINTLEFT$(Y$,24);"[201]S THIS IT? ( [210][197][212][213][210][206][146] = YES )";
  545. 29190 X%=29:Y%=24:L%=1:GOSUB 34000
  546. 29200 RETURN
  547. 29220 PRINTLEFT$(Y$,24);"EX[146]IT, [210][197][212][213][210][206][146] FOR NEXT REC.,[198]1[146] TO PRINT";SP$;
  548. 29230 GETIN$:IFIN$<>CHR$(13)ANDIN$<>CHR$(133)ANDIN$<>"X" THEN 29230
  549. 29245 IF IN$=CHR$(133)THEN GOSUB 51100:GOTO29220
  550. 29250 RETURN
  551. 29999 REM ==== NUMERIC FIELD EDIT CHECK SUBROUTINE ====
  552. 30000 B$=CD$:A$=CHR$(32):GOSUB41000:CD=I9
  553. 30001 IF CD>1 THEN CD$=LEFT$(CD$,CD-1):GOTO 30000
  554. 30002 IF CD=1 THEN CD$=MID$(CD$,2):GOTO 30000
  555. 30005 FOR ZZ=1 TO LEN(CD$)
  556. 30010 IFMID$(CD$,ZZ,1)>="0"ANDMID$(CD$,ZZ,1)<="9" THEN 30020
  557. 30015 IFMID$(CD$,ZZ,1)<>"."ANDMID$(CD$,ZZ,1)<>"-" THEN E=1:RETURN
  558. 30020 NEXT ZZ
  559. 30030 B$=CD$:A$="-":GOSUB41000:I1=I9:B$=MID$(B$,I1+1)
  560. 30035 GOSUB 41000:I2=I9:IF I1>0 AND I2>0 THEN E=1:RETURN
  561. 30040 B$=CD$:A$=".":GOSUB41000:I1=I9:B$=MID$(B$,I1+1)
  562. 30045 GOSUB 41000:I2=I9:IF I1>0 AND I2>0 THEN E=1:RETURN
  563. 30050 RETURN
  564. 30999 REM ==== ALPHA FIELD EDIT CHECK SUBROUTINE ====
  565. 31000 FOR ZZ=1 TO LEN(CD$)
  566. 31010 IF(MID$(CD$,ZZ,1)<="9"ANDMID$(CD$,ZZ,1)>="0") THEN E=1:RETURN
  567. 31020 NEXT ZZ
  568. 31030 RETURN
  569. 32000 PRINT"[147][212]HIS WILL ERASE ALL PREVIOUS RECORDS."
  570. 32010 PRINT:PRINT"[212]O CONTINUE TYPE 'C' THEN [210][197][212][213][210][206][146]
  571. 32020 X%[178]34:Y%[178]3:L%[178]1:[141] 34000
  572. 32030 [139]IN$[179][177]"C" [167] [142]
  573. 32040 [153]:[153]"(null)HIS WILL TAKE A LITTLE WHILE."
  574. 32045 [152]15,"S0:ACCTSR/X"
  575. 32050 [159]1,8,15:[159]2,8,2,"0:ACCTSR/X,L,"[170][199](5)
  576. 32055 [152]1,"P"[199](2)[199]( 204 )[199]( 0 )[199](1)
  577. 32060 [152]2,[199](255)
  578. 32063 RP[178]1:[141]52110
  579. 32064 NR$[178][196](0):NXR$[178][196](2):XFS$[178][196](1)
  580. 32065 [152]2,NR$:[152]2,NXR$:[152]2,[196]( 15 ):[152]2,XFS$
  581. 32070 [160]1:[160]2:NR[178]0
  582. 32085 [152]15,"S0:"[170](DF$):[159]1,8,15
  583. 32090 [159]4,8,4,"0:ACCTSR0/D,L,"[170][199](80):JN[178][181](( 192 [172] 100 )[173]80)[170]1
  584. 32093 R2[178][181](JN[173]256):R1[178]JN[171]256[172]R2
  585. 32095 [152]1,"P"[199](4)[199](R1)[199](R2)[199](1)
  586. 32098 [141]52220:[152]4,[199](255):[160]1:[160]4
  587. 32100 [159]3,8,3,"0:ACCTSR/GLB,L,"[170][199](15)
  588. 32110 [129]I[178]1[164]NG
  589. 32120 [152]3,[196](0)
  590. 32130 GL(I)[178]0
  591. 32140 [130]I
  592. 32150 [160]3
  593. 32160 PQ[178]1:[142]
  594. 33000 [159]4,8,4,"0:"[170]SF$
  595. 33002 [141]52220:[139] DS[178]0 [167] 33010
  596. 33004 [153]:[153]"LOAD(null)OUR PROGRAM DISK MUST BE IN DRIVE #0 - (null)RESS (null)VAL(null)(null)(null)(null)WAIT TO CONTINUE
  597. 33006 GETAA$:IFAA$<>CHR$(13)THEN33006
  598. 33008 CLOSE4:GOTO 33000
  599. 33010 INPUT#4,NF:IFNF=<0THEN33060
  600. 33020 DIMPR$(NF),X%(NF),Y%(NF),L%(NF),T$(NF)
  601. 33030 FOR I=1 TO NF
  602. 33040 INPUT#4,PR$(I),X%(I),Y%(I),L%(I),T$(I)
  603. 33050 NEXT I
  604. 33060 INPUT#4,NC:IFNC=<0THEN33102
  605. 33070 DIM CP$(NC),CX%(NC),CY%(NC),CT$(NC),CD(NC),CE(NC),CL%(NC)
  606. 33080 FORI=1TONC
  607. 33090 INPUT#4,CP$(I),CX%(I),CY%(I),CL%(I),CT$(I)
  608. 33100 NEXTI
  609. 33102 INPUT#4,NG:IFNG=<0THEN33110
  610. 33105 DIM GP$(NG),GX%(NG),GY%(NG),GT$(NG),GL(NG),GK(NG),GM(NG),GL%(NG)
  611. 33107 FORI=1TONG:INPUT#4,GP$(I),GX%(I),GY%(I),GL%(I),GT$(I):NEXT I
  612. 33110 INPUT#4,NT:IFNT=<0THEN33160
  613. 33120 DIM TP$(NT),TX%(NT),TY%(NT)
  614. 33130 FORI=1TONT
  615. 33140 INPUT#4,TP$(I),TX%(I),TY%(I)
  616. 33150 NEXTI
  617. 33160 CLOSE4:RETURN
  618. 34000 IN$="":J=1:AD=1024+(Y%-1)*40+X%-1
  619. 34005 FORKL=0TOL%:POKE55296+(Y%-1)*40+(X%+KL),C3:NEXTKL
  620. 34010 IFJ=1ANDL%>1THENPRINTLEFT$(Y$,Y%);TAB(X%);LEFT$(DT$,L%)
  621. 34020 POKEAD+J,PEEK(AD+J)OR128
  622. 34030 GET I$:IFI$=""THEN 34030
  623. 34031 IFI$=CHR$(140)THENGOSUB54300:GOTO34010
  624. 34032 II=ASC(I$)
  625. 34033 IF I$=CHR$(32) THEN I$=CHR$(160):GOTO34080
  626. 34035 IF II=133 THENIN$=I$:RETURN
  627. 34036 IF II=34 THEN 34030
  628. 34040 IF(II<32ANDII<>20ANDII<>13)OR(II>128ANDII<192)OR(II>218)THEN34010
  629. 34041 IFII=59ORII=58ORII=44THEN34010
  630. 34045 IF II<>20 THEN 34070
  631. 34050 IF J=1 THEN 34010
  632. 34060 J=J-1:IN$=LEFT$(IN$,J-1):I$=".":PRINTLEFT$(Y$,Y%);SPC(X%+J);".":GOTO34090
  633. 34070 IFII=13THENPOKEAD+J,PEEK(AD+J)AND 127:RETURN
  634. 34080 IN$=IN$+I$
  635. 34090 PRINTLEFT$(Y$,Y%);SPC(X%+J-1);I$
  636. 34100 IFJ=L%THENIN$=LEFT$(IN$,J-1)+I$:GOTO54000
  637. 34110 IF II<>20 THEN J=J+1
  638. 34120 GOTO 34010
  639. 34200 REM ==== REMOVE TRAILING BLANKS ====
  640. 34205 IF IN$="" THEN RETURN
  641. 34210 CC%=ASC(RIGHT$(IN$,1))
  642. 34220 IF CC%<>32ANDCC%<>160 THEN RETURN
  643. 34230 IN$=LEFT$(IN$,LEN(IN$)-1):GOTO34205
  644. 35000 POKE808,237:PRINT"[147][211]CAN ALL OR SELECTED RECORDS? (A/S)";
  645. 35010 X%=36:Y%=1:L%=1:GOSUB 34000:ST$=IN$
  646. 35015 IF IN$=CHR$(133) THEN RETURN
  647. 35020 IF ST$<>"A" AND ST$<>"S" THEN 35010
  648. 35030 IF ST$="A" THEN 35180
  649. 35035 PRINTLEFT$(Y$,4)
  650. 35040 PRINT"[215]HAT FIELD DO YOU WISH TO SELECT BY?"
  651. 35045 PRINT"( 1-";NF+NC;" OR 'LIST' )";
  652. 35050 X%=21:Y%=PEEK(214)+1:L%=5:GOSUB 34000:SF=VAL(IN$)
  653. 35060 IF IN$<>"LIST" THEN 35080
  654. 35070 F=2:GOSUB20000:PRINT CHR$(147):GOTO35035
  655. 35080 IF SF<1ORSF>NF+NC THEN PRINTLEFT$(Y$,9)"INVALID FIELD"
  656. 35083 IF SF<1ORSF>NF+NC THEN FOR ZT=1TO1000:NEXTZT
  657. 35085 IF SF<1ORSF>NF+NC THEN PRINTLEFT$(Y$,9);SP$:GOTO35035
  658. 35090 IF SF<=NF THEN T$=T$(SF) : LS%=L%(SF) : GOTO 35110
  659. 35100 T$=CT$(SF-NF) : LS%=CL%(SF-NF)
  660. 35110 PRINTLEFT$(Y$,9);"[211]MALLEST ITEM TO SELECT?";:Y0%=PEEK(214)+2
  661. 35120 X%=0:Y%=Y0%:L%=LS%
  662. 35122 IF T$="D" THEN GOSUB 49000:SM$=IN$:GOTO 35130
  663. 35125 GOSUB 34000: GOSUB 34200 : SM$=IN$
  664. 35130 IF SM$="" THEN 35120
  665. 35135 IF T$="D" THEN D$=SM$:GOSUB 35500:SM$=D$
  666. 35140 PRINTLEFT$(Y$,12);"[204]ARGEST ITEM TO SELECT?";:Y0%=PEEK(214)+2
  667. 35150 X%=0:Y%=Y0%:L%=LS%
  668. 35152 IF T$="D" THEN GOSUB 49000:LR$=IN$:GOTO 35160
  669. 35155 GOSUB 34000: LR$=IN$
  670. 35160 IF LR$="" THEN 35150
  671. 35165 IF T$="D" THEN D$=LR$:GOSUB 35500:LR$=D$
  672. 35170 LR=VAL(LR$):SM=VAL(SM$)
  673. 35172 IF (T$="#"ORT$="$")AND LR<SM THEN RETURN
  674. 35175 IF (T$="A"ORT$="D")ANDLR$<SM$ THEN RETURN
  675. 35180 FORIA=1TONG:GK(IA)=GL(IA):NEXTIA
  676. 35190 FOR RP=1 TO VAL(NXR$)-2
  677. 35200 GOSUB 40005
  678. 35210 IF LEFT$(F$(1),1)=CHR$(255) THEN 35400
  679. 35230 IF SF<=NF THEN G$=F$(SF) : GOTO 35260
  680. 35240 FOR PZ=1 TO SF-NF : GOSUB 28500 : NEXT PZ
  681. 35250 G$=STR$(CE(SF-NF))
  682. 35260 IF ST$="A" THEN 35313
  683. 35270 IF T$="#" OR T$="$" THEN 35300
  684. 35275 IF T$="D" THEN D$=G$:GOSUB35500:G$=D$
  685. 35280 IN$=G$:GOSUB34200:G$=IN$
  686. 35283 IFG$>LR$ OR G$<SM$ THEN35400
  687. 35290 GOTO 35313
  688. 35300 IF VAL(G$)<SM OR VAL(G$)>LR THEN 35400
  689. 35313 IB%=SF-NF+1 :IFIB%<1THENIB%=1
  690. 35315 IFIB%>NCTHEN35330
  691. 35320 FORPZ=IB%TONC:GOSUB28500:NEXTPZ
  692. 35330 FORIA=1TONC:CD(IA)=CE(IA):NEXTIA
  693. 35340 FOR IA=1 TO NF : G$(IA)=F$(IA) : NEXT IA
  694. 35350 GOSUB 29000:GOSUB 29220
  695. 35380 IF IN$="X"THEN RETURN
  696. 35400 NEXT RP
  697. 35410 RETURN
  698. 35500 D$=RIGHT$(D$,2)+LEFT$(D$,2)+MID$(D$,3,2):RETURN
  699. 35999 REM ==== DOLLAR FORMATTING ====
  700. 36000 DO$=STR$(INT(VAL(DO$)*100+0.5)/100):L=LEN(DO$)
  701. 36010 FOR J=1 TO L:IF MID$(DO$,J,1)="." THEN 36030
  702. 36020 NEXT J:J=J-1
  703. 36030 IF J=2 AND L>2 THEN DO$=LEFT$(DO$,1)+"0"+RIGHT$(DO$,L-1)
  704. 36040 IF J=L THEN DO$=DO$+".00"
  705. 36050 IF J=L-1 THEN DO$=DO$+"0"
  706. 36070 DO$=RIGHT$(SP$+DO$,FW)
  707. 36080 RETURN
  708. 40000 GOSUB 40005 : GOSUB 40150 : RETURN
  709. 40005 SN=INT(RS*(RP-1)/80)+1:OS=(RS*(RP-1))-(80*(SN-1))
  710. 40030 GOSUB52000:INPUT#4,IN$:IN$=LEFT$(IN$+SS$,80)
  711. 40040 RL=OS:I9=RL+1
  712. 40050 FOR J=1 TO NF:IF RL+L%(J)>80 THEN 40065
  713. 40055 RL=RL+L%(J):F$(J)=MID$(IN$,I9,L%(J)):I9=I9+L%(J)
  714. 40060 GOTO 40090
  715. 40065 F$(J)=MID$(IN$,I9,80-RL):SN=SN+1
  716. 40070 GOSUB52010:INPUT#4,IN$
  717. 40080 IN$=LEFT$(IN$+SS$,80):F$(J)=F$(J)+LEFT$(IN$,L%(J)+RL-80)
  718. 40085 RL=L%(J)-(80-RL):I9=RL+1
  719. 40090 NEXT J
  720. 40145 CLOSE1:CLOSE4:PRINT#15,"I0":RETURN
  721. 40150 FOR II=1TONF:G$(II)=F$(II):NEXT II
  722. 40160 FORPZ=1TONC:GOSUB28500:NEXT PZ
  723. 40170 FORII=1TONC: CD(II) = CE(II) :NEXTII
  724. 40180 FORII=1TONG:GK(II)=GL(II):NEXTII
  725. 40190 RETURN
  726. 40499 REM ==== ADD TRAILING BLANKS ====
  727. 40500 G$(I)=LEFT$(G$(I)+SS$,L%(I)):RETURN
  728. 40999 REM ==== STRING SEARCH ====
  729. 41000 FOR JI=1 TO LEN(B$)+1-LEN(A$)
  730. 41010 IF MID$(B$,JI,LEN(A$))=A$ THEN I9=JI:GOTO 41040
  731. 41020 NEXT JI
  732. 41030 I9=0
  733. 41040 RETURN
  734. 42000 REM ==== WRITE RECORD TO DATA FILE ====
  735. 42002 GOSUB 13100 : REM UPDATE TOTALS
  736. 42005 SN=INT(RS*(RP-1)/80)+1:OS=(RS*(RP-1))-(80*(SN-1))
  737. 42030 GOSUB52000:INPUT#4,IN$:IN$=LEFT$(IN$+SS$,80)
  738. 42040 OP$=LEFT$(IN$,OS):RL=OS:I9=RL+1
  739. 42050 FOR J=1 TO NF
  740. 42053 IF RL+L%(J)>80 THEN 42063
  741. 42056 RL=RL+L%(J):OP$=OP$+G$(J)
  742. 42060 GOTO 42080
  743. 42063 OP$=OP$+LEFT$(G$(J),80-RL):GOSUB52010:PRINT#4,OP$
  744. 42070 SN=SN+1
  745. 42073 GOSUB52010:INPUT#4,IN$:IN$=LEFT$(IN$+SS$,80)
  746. 42076 OP$=MID$(G$(J),81-RL):RL=L%(J)-(80-RL)
  747. 42080 NEXT J
  748. 42136 OP$=OP$+MID$(IN$,RL+1):GOSUB52010:PRINT#4,OP$:CLOSE4:CLOSE1
  749. 42138 PRINT#15,"I0":RETURN
  750. 49000 PRINT LEFT$(Y$,Y%);TAB(X%);"../../..";
  751. 49010 J=1 : IN$="" : AD = 1024+(Y%-1)*40 + X%-1
  752. 49020 POKE AD+J,PEEK(AD+J) OR 128
  753. 49030 GET J$ : IF J$="" THEN 49030
  754. 49040 JJ = ASC(J$)
  755. 49045 IF JJ=13 AND J=1 THEN 49085
  756. 49050 IF JJ=133 THEN IN$=J$ : RETURN
  757. 49070 IF JJ>=48 AND JJ<=57 THEN 49200
  758. 49080 IF JJ<>13 THEN 49110
  759. 49084 IF IN$<>""THEN49090
  760. 49085 IF KF=FC THEN 49030
  761. 49086 IN$="000000":PRINTLEFT$(Y$,Y%);TAB(X%+J-1);".":RETURN
  762. 49090 IF LEN(IN$)<6 THEN 49030
  763. 49100 POKE AD+8,PEEK(AD+8) AND 127 : GOTO 49250
  764. 49110 IF JJ<>20 THEN 49160
  765. 49120 PRINT LEFT$(Y$,Y%);TAB(X%+J-1);".";
  766. 49125 IF J=1 THEN IN$="":GOTO 49020
  767. 49127 IF J=8 THEN IN$=LEFT$(IN$,5)
  768. 49130 IN$=LEFT$(IN$,LEN(IN$)-1):J=J-1:IF J=3 OR J=6 THEN J=J-1
  769. 49135 PRINT LEFT$(Y$,Y%);TAB(X%+J-1);".";
  770. 49140 GOTO 49020
  771. 49160 IF JJ<>32 THEN 49030
  772. 49170 PRINT LEFT$(Y$,Y%);TAB(X%+J-1);" ";
  773. 49180 IF J=1 OR J=4 OR J=7 THEN J$=CHR$(48) : GOTO 49210
  774. 49190 J$ = CHR$(32) : GOTO 49210
  775. 49200 PRINT LEFT$(Y$,Y%);TAB(X%+J-1);J$;
  776. 49210 IF J=8 THEN IN$=LEFT$(IN$,5)
  777. 49220 IN$=IN$+J$ : J=J+1 : IF J=3 OR J=6 THEN J=J+1
  778. 49230 IF J=9 THEN J=8
  779. 49240 GOTO 49020
  780. 49250 XX=VAL(LEFT$(IN$,2)):YY=VAL(MID$(IN$,3,2)):ZZ=VAL(RIGHT$(IN$,2))
  781. 49280 PRINTLEFT$(Y$,23);SP$;
  782. 49285 IF(ZZ/4)<>INT(ZZ/4)THENGOSUB49350:IFER=18 THEN ER=0:GOTO49000
  783. 49290 IF XX<1 OR XX>12 THEN PRINTLEFT$(Y$,23);"[205]ONTH OUT OF RANGE":GOTO49000
  784. 49300 IF YY<1 OR YY>DT%(XX) THENPRINTLEFT$(Y$,23);"[196]AY OUT OF RANGE":GOTO49000
  785. 49310 IN$=RIGHT$("00"+MID$(STR$(XX),2),2)
  786. 49320 IN$=IN$+RIGHT$("00"+MID$(STR$(YY),2),2)
  787. 49330 IN$=IN$+RIGHT$("00"+MID$(STR$(ZZ),2),2)
  788. 49340 RETURN
  789. 49350 IF XX=2 AND YY=29THENER=18:PRINTLEFT$(Y$,23);"[196]AY OUT OF RANGE"
  790. 49360 RETURN
  791. 49999 REM ==== TEXT FILE TO BINARY CONVERSION PROGRAM ====
  792. 50000 I=0:PN$="":L=PEEK(828):FORX=1TOL:PN$=PN$+CHR$(PEEK(828+X)):NEXT X
  793. 50009 GOSUB32000:OPEN2,8,2,"0:"+(PN$):
  794. 50010 POKE152,1:POKE153,8:Q$=CHR$(34)
  795. 50020 PP$=LEFT$(PN$,L-2)+"/T"
  796. 50030 PRINT"[147]":IF I=0 THEN50050
  797. 50040 REM:
  798. 50050 FORZ=1 TO9 : FOR Z1=1 TO 80
  799. 50060 GET #2,A$:PRINTA$;:IF ST=64THEN 50140
  800. 50090 IF A$=CHR$(13)THEN 50100
  801. 50095 NEXT Z1
  802. 50100 NEXT Z
  803. 50110 PRINT"I=";I+9;":L=";L;":PN$=";Q$;PN$;Q$;":GOTO 50010"
  804. 50120 POKE 198,11:FORN=0TO9:POKE631+N,13:NEXTN
  805. 50130 END
  806. 50140 PRINT"PP$=";CHR$(34);PP$;CHR$(34);":GOTO 50160"
  807. 50150 POKE 198,Z+1:FORN=0 TOZ:POKE631+N,13:NEXTN
  808. 50155 CLOSE2:END
  809. 50160 NM$=LEFT$(PP$,LEN(PP$)-2):SF$=NM$+"/S":TF$=NM$+"/B":AF$=NM$+"/PCF"
  810. 50161 PN$=NM$+"/T":GOTO60000
  811. 51100 PRINTLEFT$(Y$,24);SP$;SP$;LEFT$(Y$,24);"[201]S YOUR PRINTER A [195]OMMODORE?  [146]";
  812. 51102 GETA$:IFA$<>"Y"ANDA$<>"N"ANDA$<>CHR$(13)THEN51102
  813. 51104 IFA$=CHR$(13)THEN51108
  814. 51106 IN$=A$:PRINTLEFT$(Y$,24);SPC(29);"";IN$;"[146]";:GOTO51102
  815. 51108 IFIN$=""THEN51102
  816. 51110 IFIN$="Y"THENPOKE832,7:GOTO51120
  817. 51112 POKE832,8
  818. 51120 CLOSE3:OPEN3,4:PRINT#3,"":IFST<>0THEN51150
  819. 51125 PRINTLEFT$(Y$,24);SP$;SP$;LEFT$(Y$,25);"[208]RINTING....";
  820. 51130 SYS828
  821. 51135 GOSUB52210:RETURN
  822. 51149 REM ==== PRINTER ERROR MSG ROUTINE ====
  823. 51150 PRINTLEFT$(Y$,23)"  [208]RINTER [206]OT [210]EADY[146]         "
  824. 51170 FORX=1TO1200:NEXT
  825. 51180 PRINTLEFT$(Y$,23);SP$;:CLOSE3:RETURN
  826. 52000 REM ==== POSITION DATA FILE POINTER ====
  827. 52005 OPEN1,8,15:OPEN4,8,4,"0:"+DF$
  828. 52010 R2=INT(SN/256):R1=SN-256*R2
  829. 52020 PRINT#1,"P"CHR$(4)CHR$(R1)CHR$(R2)CHR$(1)
  830. 52030 RETURN
  831. 52100 REM ==== POSITION INDEX FILE POINTER ====
  832. 52105 OPEN1,8,15:OPEN2,8,2,"0:"+HF$
  833. 52110 R2=INT(RP/256):R1=RP-256*R2
  834. 52120 PRINT#1,"P"CHR$(2)CHR$(R1)CHR$(R2)CHR$(1)
  835. 52130 RETURN
  836. 52135 REM ==== READ FROM HASH FILE ====
  837. 52140 INPUT#2,IK$:CLOSE1:CLOSE2:IK=VAL(IK$):RETURN
  838. 52145 REM ==== WRITE TO HASH FILE ====
  839. 52147 PRINT#2,IK$:CLOSE1:CLOSE2:RETURN
  840. 52150 REM ==== POSITION FORMAT FOR GBL FILE ====
  841. 52160 R2=INT(IJ/256):R1=IJ-256*R2
  842. 52170 PRINT#15,"P"CHR$(3)CHR$(R1)CHR$(R2)CHR$(1)
  843. 52180 RETURN
  844. 52200 REM ==== ERROR CHANNEL OPEN AND INPUT RTNS ====
  845. 52210 OPEN 15,8,15:RETURN
  846. 52220 INPUT#15,ER$,EM$,ET$,ES$
  847. 52230 DS=0:DS=VAL(ER$):IFDS=0 THEN RETURN
  848. 52240 DS$=ER$+ +EM$+ +ET$+ +ES$
  849. 52250 RETURN
  850. 53000 REM ==== SET DISPLAY COLORS ====
  851. 53005 C1=0:C2=0:C3=1
  852. 53010 CO$="[144][159][156][158][129][149][150][151][152][153][154][155]"
  853. 53015 PRINTCHR$(147)TAB(13)"[211]ET [195]OLOR [205]ODE"
  854. 53020 PRINT:PRINT:PRINTTAB(5)"[F1] SETS SCREEN COLOR"
  855. 53025 PRINT:PRINTTAB(5)"[F3] SETS BORDER COLOR"
  856. 53030 PRINT:PRINTTAB(5)"[F5] SETS TEXT COLOR"
  857. 53035 PRINT:PRINTTAB(5)"[F7] RETURNS YOU TO MAIN MENU"
  858. 53045 GETAA$:IFAA$=""THEN53045
  859. 53050 IFAA$=CHR$(133)THEN53075
  860. 53055 IFAA$=CHR$(134)THEN53085
  861. 53060 IFAA$=CHR$(135)THEN53095
  862. 53065 IFAA$=CHR$(136)THEN RETURN
  863. 53070 GOTO53045
  864. 53075 C1= C1+1:IFC1>15THENC1=0
  865. 53080 POKE53281,C1:GOTO53015
  866. 53085 C2= C2+1:IFC2>15THENC2=0
  867. 53090 POKE53280,C2:GOTO53015
  868. 53095 C3= C3+1:IFC3>17THENC3=1
  869. 53100 PRINT MID$(CO$,C3,1):GOTO53015
  870. 54000 REM ==== BEEPER ROUTINE ====
  871. 54001 IFSD=1THEN54055
  872. 54005 S=54272
  873. 54010 POKE S+24,15
  874. 54015 POKE S+2,72
  875. 54020 FOR X=1 TO 4
  876. 54025 : POKE S+1,169:
  877. 54030 : POKE S+4,33
  878. 54035 REM FOR I=1 TO 5 : NEXT
  879. 54040 POKE S+4,4
  880. 54045 NEXT X
  881. 54050 GOTO34010
  882. 54055 FOR X=1 TO 24:POKE 54272+X,0 : NEXT
  883. 54060 GOTO34010
  884. 54300 IFSD=0THENSD=1:I$="":RETURN
  885. 54305 IFSD=1THENSD=0:I$="":RETURN
  886. 54310 RETURN
  887. 55100 FORI=828TO961:READD7:POKEI,D7:NEXT:RETURN
  888. 55110 DATA169,4,170,160,7,32,186,255,169,0,32,189,255,32,192,255,162,4,32,201
  889. 55120 DATA255,169,0,133,251,133,253,169,4,133,252
  890. 55125 DATA160,0,177,251,201,96,208,05,169,32,76,143,3,169,64,56,241,251,41,32
  891. 55130 DATA10,141,251,3,177,251,41,64,10,13,251,3,141,251,3,177,251,41,127,13,251
  892. 55140 DATA3,208,2,169,64,201,96,208,2,169,32,32,210,255,230,253,169,40,56,229,253
  893. 55150 DATA208,7,133,253,169,13,32,210,255,169,111,197,251,208,6,169,7,197,252,240
  894. 55160 DATA16,24,165,251,105,1,133,251,165,252,105,0,133,252,76,91,3,32,231,255,96
  895. 60000 PRINTCHR$(147):FORI=1TO6:PRINT:NEXT
  896. 60005 PRINTTAB(11)"[208]LEASE [215]AIT [215]ORKING"
  897. 60010 CLOSE15:OPEN15,8,15:PRINT#15,"I0"
  898. 60020 PRINT#15,"S0:"+TF$
  899. 60025 PRINT#15,"S0:"+PN$
  900. 60030 INPUT#15,ER$,EM$
  901. 60032 POKE 808,237: REM ===  ENABLE RUN/STOP
  902. 60040 SAVE PN$,8:VERIFY PN$,8
  903. 60070 PRINT: PRINT "[217]OUR PROGRAM HAS BEEN SAVED ON YOUR"
  904. 60075 PRINT"APPLICATION DISK.":PRINT
  905. 60080 PRINT"[212]O RUN YOUR PROGRAM NOW, TYPE 'RUN'."
  906.